------------------------------------- Chapitre VIII - Cryptographie -------------------------------------
Cryptographie symétrique : un exemple de Blowfish - 3/4
Phase de déchiffrement :
On peut déjà remarquer que la routine d'enregistrement ne tient compte que du serial entré...
Au niveau de cette routine :
On obtient au niveau de la pile :
Arg1 pointe vers le serial.
Arg2 pointe vers :
C'est là où sera stocké le serial.
Par la suite, on peut reconnaître DataL / DataR.
C'est ce que demande le serial, qui doit donc représenter 2 DWORDs et faire 16 caractères...
Voici la routine qui récupère le "1er DWORD" :
Dans la pile, on a :
En 000F2794, on voit apparaître :
Voici l'appel à la fonction Blowfish_decrypt ( ) :
Dans la pile, on récupère les paramètres passés à la fonction :
En sortie (valeurs retournées), on récupère :
On peut donc retrouver le serial déchiffré, à l'aide de Keygener Assistant d'AT4RE :
Après déchiffrement du serial, on a deux vérifications :
Voici la fonction Blowfish_decrypt ( ) :
avec le même appel à la fonction GetByte (X,Y) :
Essayons de trouver un serial valide :
Input :
000000010001869E
Serial :
6223E492C4F077C0
La 1ère partie du serial est quelconque, la deuxième partie de serial doit être non nulle mais inférieure à 1869Fh.
Le serial calculé précédemment est finalement validé par un message :
Le code correspondant est :
L'API MessageBoxA est elle aussi encapsulée :
Où est stocké le serial ?
Il est dans un keyfile.
Dans la pile, on trouve le chemin d'un fichier au nom anodin :
Il s'agit du fichier bitmap, qui apparaît lors de l'analyse du DVD inséré :
Le serial est stocké à la fin du fichier en question :
Avant enregistrement, on a :
Après enregistrement :
On peut passer au keygenning :).